Il linguaggio nascosto all'interno
Rust ha un segreto: in realtà due linguaggi in uno. Mentre Rust sicuro è il tuo custode, il compilatore Rust è fondamentalmente cauteloso. Segue una filosofia rigorosa: è meglio rifiutare un programma valido e sicuro piuttosto che permettere per errore un singolo programma pericoloso. Questo crea uno scarto tra ciò che l'hardware può fare e ciò che il compilatore può dimostrare.
La realtà rigida
Immagina il compilatore come un guardiano severo. Nel nostro esempio di codice, il guardiano della corrispondenza if y si applica a tutto il gruppo di modelli (4 | 5 | 6). Questa rigidità precedenza riflette come funziona il controllore di prestito; applica regole globali e intransigenti alla tua memoria. Ma l'hardware informatico sottostante è inherentemente non sicuro; non comprende proprietà o durata. Per creare strumenti ad alte prestazioni come split_at_mut, dobbiamo entrare nel Rust unsafe 'passaggio di fuga' per eseguire operazioni tecnicamente corrette ma logicamente troppo complesse per l'analisi statica del compilatore.
Lo spazio tra i cerchi rosso e verde è dove vive il codice unsafe: ci permette di raggiungere il massimo potenziale dell'hardware quando l'analisi statica fallisce.